perm filename EN.LST[11,HE] blob
sn#690547 filedate 1982-12-13 generic text, type T, neo UTF8
ENDRV MACRO M1113 13-DEC-82 14:16 PAGE 1
1 ; COPYRIGHT XEROX CORPORATION 1979
2 .TITLE ENDRV
3 .DSABL GBL
4 .MCALL IOERR$
U 5 .MCALL INTSV$
6 .GLOBL $FORK
7 .GLOBL $GTPKT
8 .GLOBL $GTWRD
9 .GLOBL $IODON
10 .GLOBL $PTWRD
11 .GLOBL IO.RLB
12 000000 IOERR$
U 13 000000 000000 DEVDF$
U 14 000002 000000 HWDDF$
U 15 000004 000000 PKTDF$
U 16 000006 000000 TCBDF$
17
18 .LIST MEB
19
20 000030 U.CNT=30 ;FROM DEVDF$,HWDDF$,PKTDF$,TCBDF$
21 000012 I.FCN=12 ; "
22 000024 I.PRM=24 ; "
23 000012 S.CSR=12 ; "
24 000014 U.CW3=14 ; "
25 000020 U.SCB=20 ; "
26
27 000000 LD$EN=0 ;REQUIRED FOR LOADABLE DRIVERS
28
29 177774 ETHOWC=-4 ;ETHERNET OUTPUT WORD COUNT
30 177776 ETHOBL=-2 ;ETHERNET OUTPUT BUFFER LOCATION
31 000000 ETHOCS=0 ;ETHERNET OUTPUT CONTROL & STATUS
32 000002 ETHOSD=2 ;ETHERNET OUTPUT START DELAY
33 177774 ETHIWC=-4 ;ETHERNET INPUT WORD COUNT
34 177776 ETHIBL=-2 ;ETHERNET INPUT BUFFER LOCATION
35 000000 ETHICS=0 ;ETHERNET INPUT CONTROL & STATUS
36 000002 ETHRDA=2 ;ETHERNET READ DEVICE ADDRESS
37 ;
38 000010 START: ;MUST BE RELOCATABLE 0
39 000010 TEMP: .BLKW 1 ;SAVED PS
40 000012 CNTBL: .BLKW 2 ;ADDRESSES OF UCB'S
41 ;
42 000016 $ENTBL::
43 000016 000026' .WORD ENINI ;INITIATOR ENTRY POINT
44 000020 000264' .WORD ENCAN ;CANCEL I/O ENTRY POINT
45 000022 000306' .WORD ENTIM ;TIMEOUT ENTRY POINT
46 000024 000310' .WORD ENPWF ;POWER FAIL ENTRY POINT
47 ;
48 ;INITIATE I/O
49 ;
50 000026 ENINI:
51 000026 004767 000000G CALL $GTPKT ;GET AN I/O PACKET TO PROCESS
52 000032 103526 BCS ENPWF
53 000034 010563 000012' MOV R5,CNTBL(R3) ;SAVE UCB POINTER FOR INTERRUPT
54 000040 016402 000012 MOV S.CSR(R4),R2 ;GET DEVICE ADDRESS
55 000044 026127 000012 003000 CMP I.FCN(R1),#3000 ;GET HOST ADDRESS?
56 000052 001405 BEQ HOST ;YES
57 000054 026127 000012 000000G CMP I.FCN(R1),#IO.RLB ;READ?
ENDRV MACRO M1113 13-DEC-82 14:16 PAGE 1-1
58 000062 001434 BEQ IN ;YES
59 000064 000450 BR OUT ;WRITE
60 ;
61 ;GET AND RETURN HOST ADDRESS
62 ;
63 000066 HOST:
64 000066 005062 000000 CLR ETHICS(R2) ;RESET INPUT BOARD
65 000072 005062 177770 CLR -10(R2) ;RESET OUTPUT BOARD
66 000076 013701 172352 MOV @#172352,R1 ;PAR 5
67 000102 072127 000006 ASH #6,R1
68 000106 010167 000430 MOV R1,INADD
69 000112 066767 000422 000422 ADD BUFIN,INADD ;PA OF INBUF
70 000120 010167 001500 MOV R1,OUTADD
71 000124 066767 001472 001472 ADD BUFOUT,OUTADD ;PA OF OUTBUF
72 000132 016201 000002 MOV ETHRDA(R2),R1 ;HOST ADDR
73 000136 105101 COMB R1 ;I/O STATUS WORD 2
74 000140 012700 000001 MOV #IS.SUC,R0 ;I/O STATUS WORD 1
75 000144 005002 CLR R2 ;ERROR LOGGING COUNTS
76 000146 004767 000000G CALL $IODON
77 000152 000725 BR ENINI
78 ;
79 ;START INPUT
80 ;
81 000154 IN:
82 000154 016504 000030 MOV U.CNT(R5),R4 ;SET MAX BYTE COUNT
83 000160 006204 ASR R4 ;MAKE INTO WORD COUNT
84 000162 005404 NEG R4 ;MAKE NEGATIVE
85 000164 010462 177774 MOV R4,ETHIWC(R2) ;SET NEGATIVE WORD COUNT
86 000170 016762 000346 177776 MOV INADD,ETHIBL(R2) ;SET BUFFER ADDRESS
87 000176 012762 000101 000000 MOV #101,ETHICS(R2) ;START INPUT
88 000204 000710 BR ENINI
89 ;
90 ;START OUTPUT
91 ;
92 000206 OUT:
93 000206 016504 000030 MOV U.CNT(R5),R4 ;SET OUTPUT BYTE COUNT
94 000212 006204 ASR R4 ;MAKE INTO WORD COUNT
95 000214 010403 MOV R4,R3
96 000216 005404 NEG R4
97 000220 010462 177774 MOV R4,ETHOWC(R2) ;SET NEGATIVE WORD COUNT
98 000224 012704 001626' MOV #OUTBUF,R4
99 000230 OUT1:
100 000230 004767 000000G CALL $GTWRD ;GET WORD FROM CALLER
101 000234 012624 MOV (SP)+,(R4)+ ;PUT IN OUTPUT BUFFER
102 000236 077304 SOB R3,OUT1 ;REPEAT UNTIL DONE
103 000240 016762 001360 177776 MOV OUTADD,ETHOBL(R2) ;SET BUFFER ADDRESS
104 000246 116162 000032 000002 MOVB I.PRM+6(R1),ETHOSD(R2) ;SET OUTPUT START DELAY
105 000254 012762 000101 000000 MOV #101,ETHOCS(R2) ;START OUTPUT
106 000262 000661 BR ENINI
107 ;
108 ;CANCEL I/O
109 ;
110 000264 ENCAN:
111 000264 005074 000012 CLR @S.CSR(R4) ;RESET ETHERNET BOARD
112 000270 012700 177761 MOV #IE.ABO,R0 ;SET ABORT CODE
113 000274 005001 CLR R1 ;BYTE CNT = 0
114 000276 005002 CLR R2
ENDRV MACRO M1113 13-DEC-82 14:16 PAGE 1-2
115 000300 004767 000000G CALL $IODON ;I/O COMPLETED
116 000304 000207 RETURN
117 ;
118 ;TIMEOUT ENTRY
119 ;
120 000306 ENTIM:
121 000306 000207 RETURN
122 ;
123 ;POWER-FAIL ENTRY
124 ;
125 000310 ENPWF:
126 000310 000207 RETURN
ENDRV MACRO M1113 13-DEC-82 14:16 PAGE 2
128 ;
129 ;INPUT/OUTPUT COMPLETE INTERRUPT
130 ;
131 000312 $ENINT::
132 000312 000174 000316' JMP @TABLE(R4) ;EXECUTE CORRECT ROUTINE
133 000316 TABLE:
134 000316 000446' .WORD $ENOUT
135 000320 000322' .WORD $ENINP
136 ;
137 ;INPUT INTERRUPT
138 ;
139 000322 $ENINP::
OQ 140 000322 INTSV$ EN,PR5,2 ;R5 = UCB ADDRESS
141 000322 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
142 000326 017465 000012 000014 MOV @S.CSR(R4),U.CW3(R5) ;INPUT CONTROL & STATUS
143 000334 004767 000000G CALL $FORK
144 000340 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
145 000344 016402 000012 MOV S.CSR(R4),R2
146 000350 005062 000000 CLR ETHICS(R2) ;RESET INPUT BOARD
147 000354 005765 000014 TST U.CW3(R5)
148 000360 100004 BPL ENINP1
149 000362 012700 177774 MOV #IE.VER,R0 ;UNSUCCESSFUL COMPLETION
150 000366 005001 CLR R1 ;INPUT BYTE COUNT
151 000370 000421 BR ENINP2
152 000372 ENINP1:
153 000372 012700 000001 MOV #IS.SUC,R0 ;SUCCESSFUL COMPLETION
154 000376 016201 177774 MOV ETHIWC(R2),R1 ;INPUT WORD COUNT (NEG)
155 000402 052701 176000 BIS #176000,R1 ;SIGN EXTEND
156 000406 006301 ASL R1 ;CONVERT TO BYTES
157 000410 066501 000030 ADD U.CNT(R5),R1 ;R1 = PACKET LENGTH (BYTES)
158 000414 010103 MOV R1,R3
159 000416 006203 ASR R3 ;R3 = PACKET LENGTH (WORDS)
160 000420 012704 000544' MOV #INBUF,R4
161 000424 INLOOP:
162 000424 012446 MOV (R4)+,-(SP)
163 000426 004767 000000G CALL $PTWRD ;PASS WORD TO CALLER
164 000432 077304 SOB R3,INLOOP ;REPEAT UNTIL DONE
165 000434 ENINP2:
166 000434 005002 CLR R2 ;ERROR LOGGING COUNTS
167 000436 004767 000000G CALL $IODON
168 000442 000167 177360 JMP ENINI
169 ;
170 ;OUTPUT INTERRUPT
171 ;
172 000446 $ENOUT::
OQ 173 000446 INTSV$ EN,PR5,2 ;R5 = UCB ADDRESS
174 000446 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
175 000452 017465 000012 000014 MOV @S.CSR(R4),U.CW3(R5) ;OUTPUT CONTROL & STATUS
176 000460 004767 000000G CALL $FORK
177 000464 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
178 000470 016402 000012 MOV S.CSR(R4),R2
179 000474 005062 000000 CLR ETHOCS(R2) ;RESET OUTPUT BOARD
180 000500 005765 000014 TST U.CW3(R5)
181 000504 100004 BPL ENOUT1
182 000506 012700 177774 MOV #IE.VER,R0 ;UNSUCCESSFUL COMPLETION
183 000512 005001 CLR R1 ;OUTPUT BYTE COUNT
184 000514 000404 BR ENOUT2
ENDRV MACRO M1113 13-DEC-82 14:16 PAGE 2-1
185 000516 ENOUT1:
186 000516 012700 000001 MOV #IS.SUC,R0 ;SUCCESSFUL COMPLETION
187 000522 016501 000030 MOV U.CNT(R5),R1 ;OUTPUT BYTE COUNT
188 000526 ENOUT2:
189 000526 005002 CLR R2 ;ERROR LOGGING COUNTS
190 000530 004767 000000G CALL $IODON
191 000534 000167 177266 JMP ENINI
192 ;
193 ;I/O BUFFERS
194 ;
195 000540 000534 BUFIN: .WORD INBUF-START ;OFFSET IN PARTITION
196 000542 INADD: .BLKW 1 ;PA OF INBUF
197 000544 INBUF: .BLKW 279.
198 ;
199 001622 001616 BUFOUT: .WORD OUTBUF-START ;OFFSET IN PARTITION
200 001624 OUTADD: .BLKW 1 ;PA OF OUTBUF
201 001626 OUTBUF: .BLKW 279.
202 000001 .END
ENDRV MACRO M1113 13-DEC-82 14:16 PAGE 2-2
SYMBOL TABLE
BUFIN 000540R IE.BHD= 177700 IE.IFU= 177747 IE.RNM= 177715 IS.SUC= 000001
BUFOUT 001622R IE.BLB= 177672 IE.ILL= 177726 IE.RSU= 177757 IS.TAB= 004401
CNTBL 000012R IE.BLK= 177754 IE.ISQ= 177703 IE.SNC= 177735 IS.TMO= 000002
DEVDF$= ****** IE.BNM= 177712 IE.LCK= 177745 IE.SPC= 177772 IS.TNC= 000002
ENCAN 000264R IE.BTF= 177664 IE.MOD= 177753 IE.SQC= 177734 I.FCN = 000012
ENINI 000026R IE.BTP= 177725 IE.NBF= 177731 IE.SRE= 177762 I.PRM = 000024
ENINP1 000372R IE.BVR= 177701 IE.NBK= 177727 IE.STK= 177706 LD$EN = 000000
ENINP2 000434R IE.BYT= 177755 IE.NDR= 177670 IE.TMM= 177671 OUT 000206R
ENOUT1 000516R IE.CKS= 177742 IE.NFI= 177704 IE.TMO= 177666 OUTADD 001624R
ENOUT2 000526R IE.CLO= 177732 IE.NFW= 177673 IE.ULK= 177653 OUTBUF 001626R
ENPWF 000310R IE.CNR= 177667 IE.NLK= 177661 IE.VER= 177774 OUT1 000230R
ENTIM 000306R IE.CON= 177752 IE.NLN= 177733 IE.WAC= 177743 PKTDF$= ******
ETHIBL= 177776 IE.DAA= 177770 IE.NNC= 177663 IE.WAT= 177741 START 000010R
ETHICS= 000000 IE.DAO= 177763 IE.NNL= 177662 IE.WCK= 177652 S.CSR = 000012
ETHIWC= 177774 IE.DFU= 177750 IE.NNN= 177674 IE.WER= 177737 TABLE 000316R
ETHOBL= 177776 IE.DNA= 177771 IE.NOD= 177751 IE.WLK= 177764 TCBDF$= ******
ETHOCS= 000000 IE.DNR= 177775 IE.NSF= 177746 IE.2DV= 177720 TEMP 000010R
ETHOSD= 000002 IE.DUN= 177767 IE.NST= 177660 IN 000154R U.CNT = 000030
ETHOWC= 177774 IE.DUP= 177707 IE.NTR= 177651 INADD 000542R U.CW3 = 000014
ETHRDA= 000002 IE.EOF= 177766 IE.OFL= 177677 INBUF 000544R U.SCB = 000020
HOST 000066R IE.EOT= 177702 IE.ONL= 177675 INLOOP 000424R $ENINP 000322RG
HWDDF$= ****** IE.EOV= 177765 IE.ONP= 177773 IO.RLB= ****** G $ENINT 000312RG
IE.ABO= 177761 IE.EXP= 177665 IE.OVR= 177756 IS.BV = 000005 $ENOUT 000446RG
IE.ALC= 177654 IE.FEX= 177717 IE.PES= 177655 IS.CC = 001401 $ENTBL 000016RG
IE.ALN= 177736 IE.FHE= 177705 IE.PRI= 177760 IS.CR = 006401 $FORK = ****** G
IE.AST= 177660 IE.FLG= 177647 IE.RAC= 177724 IS.EOT= 002001 $GTPKT= ****** G
IE.BAD= 177777 IE.FLN= 177657 IE.RAT= 177723 IS.ESC= 015401 $GTWRD= ****** G
IE.BBE= 177710 IE.FOP= 177713 IE.RBG= 177730 IS.ESQ= 115401 $IODON= ****** G
IE.BCC= 177676 IE.HFU= 177744 IE.RCN= 177722 IS.PES= 100001 $PTWRD= ****** G
IE.BDI= 177714 IE.ICE= 177721 IE.REJ= 177650 IS.PND= 000000 $$MSG = 000000
IE.BDR= 177716 IE.IES= 177656 IE.RER= 177740 IS.RDD= 000002 ...GBL= 000000
IE.BDV= 177711 IE.IFC= 177776
. ABS. 000000 000
002704 001
ERRORS DETECTED: 7
VIRTUAL MEMORY USED: 2319 WORDS ( 10 PAGES)
DYNAMIC MEMORY: 20502 WORDS ( 78 PAGES)
ELAPSED TIME: 00:00:15
,EN=ENDRV.RSX